import React from "react";
import { connect } from "dva";
import { routerRedux, Switch, Route, Redirect, Link } from "dva/router";
import { Modal } from "antd";
import 服务器配置 from "./服务器配置";
import 注册 from "./注册";
import 登录 from "./登录";
import 聊天 from "./聊天";
import NotFound from "./Exception/404";
import store from "../index";

@connect(({ global }) => {
  return {
    显示服务器配置: global.显示服务器配置,
    是否配置服务器: global.是否配置服务器
  };
})
class App extends React.Component {
  constructor(props) {
    super(props);
  }
  componentDidMount = () => {
    document.addEventListener("astilectron-ready", () => {
      window.astilectron.onMessage(message => {
        switch (message.name) {
          case "关于":
            Modal.info({
              title: "关于",
              content: "视频会议 1.0"
            });
            return { payload: "success" };
          case "服务器配置":
            this.显示服务器配置();
            return { payload: "success" };
          case "注册成功":
            this.setState({ 正在注册: false });
            this.props.dispatch(routerRedux.push("chat"));
            break;
          case "发送文字":
            console.log("app 发送文字", message);
            break;
          default:
            break;
        }
      });

      this.获取服务器配置();
    });
  };

  显示服务器配置 = () => {
    this.props.dispatch({ type: "global/save", 显示服务器配置: true });
  };
  获取服务器配置 = () => {
    const { dispatch } = this.props;
    window.astilectron.sendMessage({ name: "获取服务器配置" }, 服务器配置 => {
      const {
        服务器地址,
        服务器UDP地址,
        服务器接口地址,
        本地端口
      } = 服务器配置.payload;
      if (!服务器地址 || !服务器UDP地址 || !服务器接口地址 || !本地端口) {
        this.显示服务器配置();
      } else {
        dispatch({ type: "global/save", 服务器配置, 是否配置服务器: true });
        dispatch({ type: "global/获取用户信息" });
      }
    });
  };

  render() {
    const { 显示服务器配置, 是否配置服务器 } = this.props;
    return (
      <div>
        {显示服务器配置 && <服务器配置 />}
        {是否配置服务器 && (
          <Switch>
            <Route exact path="/register" component={注册} />
            <Route exact path="/login" component={登录} />
            <Route exact path="/chat" component={聊天} />
            <Redirect exact from="/" to="/login" />

            <Route render={NotFound} />
          </Switch>
        )}
      </div>
    );
  }
}

export default App;
